function red () {
  console.log('red');
}
function green () {
  console.log('green');
}
function yellow () {
  console.log('yellow');
}

function light (str, time) {
  return new Promise((resolve) => {
    setTimeout(() => {
      if (str === 'red') {
        red()
      } else if (str === 'green') {
        green()
      } else if (str === 'yellow') {
        yellow()
      }
      resolve()
    }, time);
  })
}
const task = () => {
  light('red', 1000).then(() => {
    return light('green', 1000)
  }).then(() => {
    return light('yellow', 1000)
  }).then(() => {
    task()
  })
}
task()



// function light (str, time) { // 不断的亮灯
//   return new Promise((resolve, reject) => {
//     if (str === 'red') {
//       setTimeout(() => {
//         red()
//         resolve()
//       }, time);
//     } else if (str === 'green') {
//       setTimeout(() => {
//         green()
//         resolve()
//       }, time);
//     } else if (str === 'yellow') {
//       setTimeout(() => {
//         yellow()
//         resolve()
//       }, time);
//     }
//   })
// }
// const task = () => {
//   light('red', 1000)
//     .then(() => {
//       return light('green', 1000)
//     }).then(() => {
//       return light('yellow', 1000)
//     }).then(() => {
//       task()
//     })
// }
// task()




















// light('red').then(() => {
//   light('green').then(() => {
//     light('yellow')
//   })
// })


// const task = () => {
//   setTimeout(() => {
//     light('red').then(() => {
//       setTimeout(() => {
//         light('green').then(() => {
//           setTimeout(() => {
//             light('yellow').then(() => {
//               task()
//             })
//           }, 1000);
//         })
//       }, 1000);
//     })
//   }, 1000);
// }
// task()